import { JKManager } from "./JKManager"

/**
 * App配置文件
 */
export class AppConfig {
    _appVersion: string
    /**
     * 版本号
     */
    get AppVersion() {
        if (!this._appVersion && CC_JSB) {
            let url = JKManager.OriginalManifestUrl,
                manifestData = JSON.parse(jsb.fileUtils.getStringFromFile(url)),
                version = manifestData.version
            this._appVersion = version || this._appVersion
        }

        return this._appVersion || `1.0.3.0`
    }
    set AppVersion(version: string) {
        this._appVersion = version || this._appVersion
    }

    /**
     * 自动旋转开关
     */
    AutoRotateScreen = false

    /**
     * 调试信息开关
     */
    DebugInfo = false

    /**
     * 热更开关
     */
    HotUpdate = true

    /**
     * 广告开关
     */
    AdEnabled = true
    /**
     * Banner广告开关，仅在在广告开启下有效
     */
    AdBannerEbabled = true
    
    /**
     * 3D物理系统开关
     */
    get Physics3DEnabled() {
        return cc.director.getPhysics3DManager().enabled
    }
    set Physics3DEnabled(enabled) {
        cc.director.getPhysics3DManager().enabled = enabled
    }
    /**
     * 2D物理系统开关
     */
    get PhysicsEnabled() {
        return cc.director.getPhysicsManager().enabled
    }
    set PhysicsEnabled(enabled) {
        cc.director.getPhysicsManager().enabled = enabled
    }
    /**
     * 帧率
     */
    set renderFrameRate(frameRate: number) {
        cc.game.setFrameRate(frameRate)
    }
    get renderFrameRate() {
        return cc.game.getFrameRate()
    }
    /**
     * 物理系统帧率
     */
    get PhysicsFps() {
        return 1 / cc.PhysicsManager.FIXED_TIME_STEP
    }
    set PhysicsFps(fps) {
        let manager = cc.director.getPhysicsManager()
        // 开启物理步长的设置
        manager.enabledAccumulator = true
        // 物理步长，默认 FIXED_TIME_STEP 是 1/60
        cc.PhysicsManager.FIXED_TIME_STEP = 1 / fps
        // 每次更新物理系统处理速度的迭代次数，默认为 10
        cc.PhysicsManager.VELOCITY_ITERATIONS = 8
        // 每次更新物理系统处理位置的迭代次数，默认为 10
        cc.PhysicsManager.POSITION_ITERATIONS = 8
    }

    /**
     * 联系邮箱
     */
    readonly ShareEmail = `support@firephoenixgame.com`
    /**
     * android 分享
     */
    readonly AndroidAppUrl = `https://play.google.com/store/apps/details?id=com.puzzlegames.jigsaw.puzzles.free`
    /**
     * ios 分享
     */
    readonly IOSAppUrl = `https://apps.apple.com/cn/app/id1603165129`

    // 服务器类型
    // ServerType = 0 // 测试
    // ServerType = 1 // 预生产
    ServerType = 2 // 生产
    ServerTypes = {
        Default: 0, // 测试
        Local: 1, // 预生产
        Remote: 2, // 生产
    }

    /**
     * 服务器链接地址
     */
    get ServerUrls() {
        return [
            // 测试
            {
                // 游戏服地址
                SvrHost: `http://${JKManager.DomainConfig.getCurDomain()}/`,
            },
            // 预生产
            {
                // 游戏服地址
                SvrHost: `http://${JKManager.DomainConfig.getCurDomain()}/`,
            },
            // 生产
            {
                // 游戏服地址
                SvrHost: `http://${JKManager.DomainConfig.getCurDomain()}/baseUrl/`,
            },
        ]
    }
    /**
     * 游戏服地址
     */
    get SvrHost() {
        return this.ServerUrls[this.ServerType].SvrHost
    }
}